|
CryptoPro JTLS. Public API. |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjavax.net.ssl.SSLEngine
ru.CryptoPro.ssl.java6.SSLEngineImpl
public final class SSLEngineImpl
Реализация механизма обмена без блокировок SSLEngine.
*В настоящий момент*, SSLEngine существует одновременно с классом SSLSocket. Таким образом, текущая реализация содержит много схожих абстракций. Это выражается во многих областях, наиболее ярко в операциях обработки ввода/вывода (IO handling).
Существуют три основных I/O потока (операции), которые могут выполняться параллельно: wrap(), unwrap(), and beginHandshake(). Мы рекомендуем пользоватеям не создавать множество wrap или unwrap, потому что данные, как может оказаться, поступают непоследовательно. В классе предпринята попытка как минимум сохранять порядок следования данных, однако он все же может нарушиться. Например, thread1 и thread2 оба вызывают wrap, thread1 получает первый пакет, thread2 получает второй пакет, но thread2 вернул контроль раньше thread1 и отправил данные. Принимающая сторона получит ошибку о нарушении порядка следования.
"Рукопожатие" осуществляется аналогично SSLSocket с использованием класов- потомков InputStream/OutputStream. Созданные классы ClientHandshakers/ServerHandshakers, создают и обрабатывают данные для обмена. Эти данные формируются преимущественно классами HandshakeInStream/HandshakeOutStreams. Наконец, классы типа InputRecord/OutputRecords, выполняют чтение/запись в сокет; их отличительная особенность в том, что их функционал расширен классами EngineInputRecord/EngineOutputRecord, которые и определяют специфику SSLEngine.
Основные отличия:
EngineInputRecord/EngineOutputRecord/EngineWriter:
| Field Summary | |
|---|---|
ru.CryptoPro.ssl.java6.EngineInputRecord |
inputRecord
|
ru.CryptoPro.ssl.java6.EngineOutputRecord |
outputRecord
|
| Constructor Summary | |
|---|---|
SSLEngineImpl(SSLContextImpl ctx)
Конструктор для SSLEngine из SSLContext, без указания хоста и порта. |
|
SSLEngineImpl(SSLContextImpl ctx,
java.lang.String host,
int port)
Конструктор для SSLEngine из SSLContext. |
|
| Method Summary | |
|---|---|
void |
beginHandshake()
|
void |
closeInbound()
|
void |
closeOutbound()
Закрытие исходящего потока сообщений. |
java.lang.Runnable |
getDelegatedTask()
Получение текущей Runnable задачи для
данного SSLEngine. |
java.lang.String[] |
getEnabledCipherSuites()
Функция возвращает имена SSL CipherSuite, которые на данный момент доступны для использования в данном соединении. |
java.lang.String[] |
getEnabledProtocols()
Функция возвращает имена протоколов, которые на данный момент доступны для использования в данном соединении. |
boolean |
getEnableSessionCreation()
Функция возвращает true, если новые соединения могут создавать новые SSL сессии. |
javax.net.ssl.SSLEngineResult.HandshakeStatus |
getHandshakeStatus()
|
java.lang.String |
getHostnameVerification()
Получение алгоритма идентификации хоста для engine. |
boolean |
getNeedClientAuth()
Функция возвращает true, если аутентификация клиента требуется. |
javax.net.ssl.SSLSession |
getSession()
Функция возращает SSL сессию для использования в данном соединении. |
java.lang.String[] |
getSupportedCipherSuites()
Функция возвращает имена CipherSuite, которые могут быть использованы в данном SSL соединении. |
java.lang.String[] |
getSupportedProtocols()
Функция возвращает протоколы, поддерживаемые данной реализацией. |
boolean |
getUseClientMode()
Функция возвращает true, если сокет работает в режиме клиента. |
boolean |
getWantClientAuth()
Функция возвращает true, если аутентификация клиента желательна. |
boolean |
isInboundDone()
Проверка, закрыт ли входящий поток данных приложения. |
boolean |
isOutboundDone()
Проверка, закрыт ли исходящий поток данных приложения. |
void |
setEnabledCipherSuites(java.lang.String[] suites)
Функция контролирует то, какие конкретно CipherSuite доступны для использования в данном соединении. |
void |
setEnabledProtocols(java.lang.String[] protocols)
Функция контролирует, какие протоколы доступны для использования в данном соединении. |
void |
setEnableSessionCreation(boolean flag)
Функция контролирует, могут ли новые соединения создавать новые SSL сессии. |
void |
setNeedClientAuth(boolean flag)
Функция устанавливает флаг, контролирующий то, требует ли сокет в режиме сервера аутентификацию клиента. |
void |
setUseClientMode(boolean flag)
Функция устанавливает флаг, контролирующий то, будет ли данный сокет работать в режиме SSL клиента или в режиме сервера. |
void |
setVersion(ru.CryptoPro.ssl.ProtocolVersion protocolVersion)
Функция устанавливает версию протокола, ассоциированную с данным соединенем. |
void |
setWantClientAuth(boolean flag)
Функция устанавливает флаг, контролирующий то, желает ли сокет в режиме сервера аутентификацию клиента. |
java.lang.String |
toString()
Функция возвращает печатное представление данной стороны соединения. |
boolean |
trySetHostnameVerification(java.lang.String identificationAlgorithm)
Конфигугрирование алгоритма идентификации конечного хоста engine. |
javax.net.ssl.SSLEngineResult |
unwrap(java.nio.ByteBuffer netData,
java.nio.ByteBuffer[] appData,
int offset,
int length)
Расшифровывает буфер. |
javax.net.ssl.SSLEngineResult |
wrap(java.nio.ByteBuffer[] appData,
int offset,
int length,
java.nio.ByteBuffer netData)
Расшифровывает буфер. |
void |
writeRecord(ru.CryptoPro.ssl.java6.EngineOutputRecord eor)
|
| Methods inherited from class javax.net.ssl.SSLEngine |
|---|
getPeerHost, getPeerPort, getSSLParameters, setSSLParameters, unwrap, unwrap, wrap, wrap |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public ru.CryptoPro.ssl.java6.EngineInputRecord inputRecord
public ru.CryptoPro.ssl.java6.EngineOutputRecord outputRecord
| Constructor Detail |
|---|
public SSLEngineImpl(SSLContextImpl ctx)
public SSLEngineImpl(SSLContextImpl ctx,
java.lang.String host,
int port)
| Method Detail |
|---|
public javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus()
getHandshakeStatus in class javax.net.ssl.SSLEnginepublic void setVersion(ru.CryptoPro.ssl.ProtocolVersion protocolVersion)
public void beginHandshake()
throws javax.net.ssl.SSLException
beginHandshake in class javax.net.ssl.SSLEnginejavax.net.ssl.SSLException
public javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer netData,
java.nio.ByteBuffer[] appData,
int offset,
int length)
throws javax.net.ssl.SSLException
unwrap in class javax.net.ssl.SSLEnginejavax.net.ssl.SSLException
public javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer[] appData,
int offset,
int length,
java.nio.ByteBuffer netData)
throws javax.net.ssl.SSLException
wrap in class javax.net.ssl.SSLEnginejavax.net.ssl.SSLException
public void writeRecord(ru.CryptoPro.ssl.java6.EngineOutputRecord eor)
throws java.io.IOException
java.io.IOExceptionpublic void closeOutbound()
closeOutbound in class javax.net.ssl.SSLEnginepublic boolean isOutboundDone()
isOutboundDone in class javax.net.ssl.SSLEngine
public void closeInbound()
throws javax.net.ssl.SSLException
closeInbound in class javax.net.ssl.SSLEnginejavax.net.ssl.SSLExceptionpublic boolean isInboundDone()
isInboundDone in class javax.net.ssl.SSLEnginepublic javax.net.ssl.SSLSession getSession()
getSession in class javax.net.ssl.SSLEnginepublic java.lang.Runnable getDelegatedTask()
Runnable задачи для
данного SSLEngine.
getDelegatedTask in class javax.net.ssl.SSLEnginepublic void setEnableSessionCreation(boolean flag)
setEnableSessionCreation in class javax.net.ssl.SSLEnginepublic boolean getEnableSessionCreation()
getEnableSessionCreation in class javax.net.ssl.SSLEnginepublic void setNeedClientAuth(boolean flag)
setNeedClientAuth in class javax.net.ssl.SSLEnginepublic boolean getNeedClientAuth()
getNeedClientAuth in class javax.net.ssl.SSLEnginepublic void setWantClientAuth(boolean flag)
setWantClientAuth in class javax.net.ssl.SSLEnginepublic boolean getWantClientAuth()
getWantClientAuth in class javax.net.ssl.SSLEnginepublic void setUseClientMode(boolean flag)
setUseClientMode in class javax.net.ssl.SSLEnginepublic boolean getUseClientMode()
getUseClientMode in class javax.net.ssl.SSLEnginepublic java.lang.String[] getSupportedCipherSuites()
getSupportedCipherSuites in class javax.net.ssl.SSLEnginepublic void setEnabledCipherSuites(java.lang.String[] suites)
setEnabledCipherSuites in class javax.net.ssl.SSLEnginesuites - список доступных CipherSuite.public java.lang.String[] getEnabledCipherSuites()
getEnabledCipherSuites in class javax.net.ssl.SSLEnginepublic java.lang.String[] getSupportedProtocols()
getSupportedProtocols in class javax.net.ssl.SSLEnginepublic void setEnabledProtocols(java.lang.String[] protocols)
setEnabledProtocols in class javax.net.ssl.SSLEngineprotocols - список доступных протоколов.
java.lang.IllegalArgumentException - когда какое-то из передаваемых имен
протоколов не поддерживается.public java.lang.String[] getEnabledProtocols()
getEnabledProtocols in class javax.net.ssl.SSLEnginepublic boolean trySetHostnameVerification(java.lang.String identificationAlgorithm)
identificationAlgorithm - Алгоритм для проверки целостности.
public java.lang.String getHostnameVerification()
public java.lang.String toString()
toString in class java.lang.Object
|
Copyright Crypto-Pro. All rights reserved. |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||